/*
 * Alga.cpp
 *
 *  Created on: 21/10/2013
 *      Author: ezequiel
 */

#include "Alga.h"

Alga::Alga(glm::vec3 posicion, glm::vec3 tamano, glm::vec3 direccion, float angulo) : Dibujable() {
this->formaAlga = new Planta();
this->posicion = posicion;
this->angulo = angulo;
this->rotacion = direccion;
this->escalado = tamano;
}

Alga::~Alga() {
this->formaAlga->~Planta();
delete this->formaAlga;
}
void Alga::render(GLuint handle, glm::mat4* matModelo) {
	changeObjectColor(this->handle, 1.0f , 1.0f ,1.0f);
	this->formaAlga->render(this->handle, matModelo );

}

void Alga::render(GLuint handle) {
	glm::mat4  matrizAuxCuerpo = glm::mat4 (1.0f);
	matrizAuxCuerpo = glm::translate(matrizAuxCuerpo, this->posicion);
	matrizAuxCuerpo =  glm::rotate(matrizAuxCuerpo,this->angulo, this->rotacion);
	matrizAuxCuerpo = glm::scale(matrizAuxCuerpo, this->escalado);
	 this->render(handle, &matrizAuxCuerpo);
}

void Alga::mover() {
	this->formaAlga->moverPlanta();
}

void Alga::setearPosInicial(float float1) {
	if (float1 < 3 && float1 > -3)
	this->formaAlga->setearMovPlanta(float1);
}

void Alga::setCam(Camara* cam, glm::mat4 pr) {
	this->formaAlga->setCam(cam, pr);
}

void Alga::setTextureid(GLuint textureid) {
	this->formaAlga->setTextureid(textureid);
}

void Alga::changeObjectColor(GLuint handle, float r, float g, float b)
{
    glm::vec3 diffuse_reflectivity = glm::vec3( r, g, b );

    GLuint location_diffuse_reflectivity = glGetUniformLocation( handle, "Kd");
    if( location_diffuse_reflectivity >= 0 )
	{
		glUniform3fv( location_diffuse_reflectivity, 1, &diffuse_reflectivity[0]);
	}

}
